package com.users.rn.kit.bridge.impl.route

import android.content.Intent
import android.os.Bundle
import com.facebook.react.bridge.Promise
import com.facebook.react.bridge.ReactContext
import com.facebook.react.bridge.ReadableMap
import com.users.rn.kit.bridge.RNBridge
import com.users.rn.rncommon.router.RNSchemeExecute
import com.users.rn.rncommon.ui.RNSingTaskActivity
import com.users.rn.rncommon.util.RNPageUtil
import org.json.JSONObject

/**
 * 实现rn路由功能
 * 作者：wolf on 12/23/20 09:54

 * 邮箱：bluce

 */

abstract class KitRouterModule : RNBridge {

    companion object {
        const val RN_MODULE_NAME: String = com.users.rn.kit.bridge.RNBridgeModuleName.RN_ROUTE
    }

    override fun moduleName(): String {
        return RN_MODULE_NAME
    }

    override fun initialize(context: ReactContext) {

    }

    override fun onDestroy(context: ReactContext) {

    }

    /**
     * 打开RN页面
     */
    fun openRNPage(
        context: ReactContext,
        pluginId: String,
        componentName: String,
        pageTag: String,
        params: ReadableMap
    ) {
        val json = JSONObject()
        json.put("pluginId", pluginId)
        json.put("moduleId", "index")
        json.put("componentName", componentName)
        json.put("params",params.toHashMap())
        json.put("pageTag", pageTag)
//        Log.d("openRNPage", "openRNPage: "+componentName)
        RNSchemeExecute.getInstance().openPage(context, json.toString())
    }


    /**
     * 通过scheme打开页面
     */
    abstract fun dispatchScheme(
        context: ReactContext,
        scheme: String,
        pageTag: String,
        promise: Promise
    )
    /**
     * 获取导航的高度
     */
    abstract fun getEnvironmentNavigationHeight(params: ReadableMap,promise: Promise)

    /**
     * 修改状态栏颜色
     */
    abstract fun setEnvironmentStatusType(
        context: ReactContext,
        params: ReadableMap)

    /**
     * 通用方法
     * params type 需要做哪些事情
     */
    abstract fun toNativeGeneralAction(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 获取照片
     */
    abstract fun getImageAction(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 展示原生pickview
     */
    abstract fun showPickView(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 原生scan
     */
    abstract fun showNativeScan(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 第三方登录
     */
    abstract fun threePartiesLogin(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 获取定位信息
     */
    abstract fun getLocationInformation(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 拨打电话方法
     */
    abstract fun openTelprompt(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 加载网页
     */
    abstract fun openNativeWeb(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 加载客服
     */
    abstract fun openCustomerService(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )

    abstract fun sendMessageVoice(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 预览图片方法
     */
    abstract fun openPhotographPreviewAction(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 唤起小程序
     */
    abstract fun openAppletsAction(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )
    /**
     * 保存分享图片
     */
    abstract fun savepicture(
        context: ReactContext,
        params: ReadableMap,
        promise: Promise
    )

}